//求正数数组的最小不可组成和
class Solution {
public:	
	int getFirstUnFormedNum(vector<int> arr, int len) 
    {
        //每个数字只能用一次
        //该问题可以转化为01背包问题，物品的价值和大小都是arr[i]
        //即让我们求哪个dp[i]!=i;
        //dp[i] 表示容量为i的背包的最大价值
        int _max=0,_min=0x3f3f3f3f;
        for(auto& e:arr)
        {
            if(e<_min) _min=e;
            _max+=e;
        }
        vector<int>dp(_max+1,0);
        for(int i=0;i<arr.size();i++)//物品数
        {
            for(int j=_max;j>=arr[i];j--)//背包容量
            {
                dp[j]=max(dp[j],dp[j-arr[i]]+arr[i]);
            }
        }
        for(int i=_min;i<=_max;i++)
        {
            if(dp[i]!=i) return i;
        }
        return _max+1;
    }
};
//有假币
#include<iostream>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        if(n==0) return 0;
        int count=0;
        while(n>1)
        {
            count++;
            if(n%3==0)
            {
                n=n/3;
            }
            else
            {
                n=n/3+1;//因为n越大 需要的次数越多 我们让n是较大的值
                        //就可以保证需要运算的次数是最大的
            }
        }
        cout<<count<<endl;
    }
    return 0;
}